//
//  ZPUserAccountTools.swift
//  Weibo
//
//  Created by 张鹏 on 16/6/26.
//  Copyright © 2016年 张鹏. All rights reserved.
//

import UIKit

class ZPUserAccountTools: NSObject {
    
    //路径
  
    //保存的用户信息数据对象
    var userAccount: ZPUserAccount?
    
    //判断用户是否登录
    var isLogin:Bool {
        //如果access_token 为nil 代表没有登录
        return accessToken != nil
    }
    
    //访问令牌 (只读属性)
    var accessToken: String? {
        //代表没有登录
        if userAccount?.access_token == nil {
            return nil
        }else {
            //如果expires_Date 于当前时间比较是降序 代表没有过去
            if userAccount?.expires_Date?.compare(NSDate()) == NSComparisonResult.OrderedDescending{
                return userAccount?.access_token
            }else {
                return nil
            }
        }
    }
    /*
     - isLogin
     - accessToken
     - 如果判断用户是否登录
     - 未登录
     - 如果我的access_token 为nil
     - 如果我的access_token 有值 但是 过期了
     - 已登录
     - 我的access_token有值 而且没有过期
     */
    // 全局访问点    
    static let sharedTools:ZPUserAccountTools = ZPUserAccountTools()

    override init() {
         super.init()
        userAccount = getUserAccount()
    }
    //保存对象
    func saveUserAccount(userAccount:ZPUserAccount){
            //如果第一次调用我们的单例 userAccount 是nil
            //然后我马上使用我们的userAccount 需要我们在保存数据的时候 要自己给单例对象身上的属性useraccount 赋值
              self.userAccount = userAccount
              let path = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString).stringByAppendingPathComponent("userAccount.plist")
        
            NSKeyedArchiver.archiveRootObject(self.userAccount!, toFile: path)
        }
        //获取对象
        func getUserAccount() ->ZPUserAccount?{
            //由于我们第一次获取对象的时候我们根本就没有保存 所以系统返回给我们为nil
               let path = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString).stringByAppendingPathComponent("userAccount.plist")
            let result = NSKeyedUnarchiver.unarchiveObjectWithFile(path) as? ZPUserAccount
            return result
        }
}

